From f8335563f17f7849df7ceefa45a0e2d656934a99 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Tue, 11 Sep 2007 15:09:33 -0600 Subject: [PATCH] [IA64] Make Big-Endian appliation run on top of dom0 and domU Signed-off-by: Anthony Xu --- xen/arch/ia64/xen/faults.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/xen/faults.c b/xen/arch/ia64/xen/faults.c index 296f50326e..f201d3fe56 100644 --- a/xen/arch/ia64/xen/faults.c +++ b/xen/arch/ia64/xen/faults.c @@ -94,7 +94,9 @@ static void reflect_interruption(unsigned long isr, struct pt_regs *regs, regs->cr_ipsr = vcpu_pl_adjust(regs->cr_ipsr, IA64_PSR_CPL0_BIT); if (PSCB(v, dcr) & IA64_DCR_BE) regs->cr_ipsr |= IA64_PSR_BE; - + else + regs->cr_ipsr &= ~IA64_PSR_BE; + if (PSCB(v, hpsr_dfh)) regs->cr_ipsr |= IA64_PSR_DFH; PSCB(v, vpsr_dfh) = 0; @@ -140,6 +142,9 @@ void reflect_event(void) regs->cr_ipsr = vcpu_pl_adjust(regs->cr_ipsr, IA64_PSR_CPL0_BIT); if (PSCB(v, dcr) & IA64_DCR_BE) regs->cr_ipsr |= IA64_PSR_BE; + else + regs->cr_ipsr &= ~IA64_PSR_BE; + if (PSCB(v, hpsr_dfh)) regs->cr_ipsr |= IA64_PSR_DFH; @@ -241,6 +246,9 @@ void ia64_do_page_fault(unsigned long address, unsigned long isr, IA64_PSR_CPL0_BIT); if (PSCB(current, dcr) & IA64_DCR_BE) regs->cr_ipsr |= IA64_PSR_BE; + else + regs->cr_ipsr &= ~IA64_PSR_BE; + if (PSCB(current, hpsr_dfh)) regs->cr_ipsr |= IA64_PSR_DFH; -- 2.30.2